import Schema from 'validate'

// 创建验证规则
const mobileValidate = new Schema({
  mobile: {
    type: String, // 字符串类型
    required: true, // 必填
    match: /^1[3-9]\d{9}$/, // 正则
    message: '手机号码不合法'
  }
});

const codeValidate = new Schema({
  code: {
    type: String, // 字符串类型
    required: true, // 必填
    match: /^\d{6}$/, // 正则
    message: '验证码不合法'
  }
})

Page({
  data: {
    // 控制倒计时显示隐藏
    countDownVisible: false,
    // 用户的手机号码
    mobile: "15774122591",
    code: ""
  },

  onLoad({ redirector }) {
    this.redirector = redirector // 把数据存到页面实例上，全局变量，可以方便在其他函数中使用
  },

  countDownChange(ev) {
    this.setData({
      timeData: ev.detail,
      countDownVisible: ev.detail.minutes === 1 || ev.detail.seconds > 0,
    })
    // console.log(ev);
  },
  // 获取验证码
  async onGetCode() {
    // 直接获取到用户的手机号码
    const mobile = this.data.mobile

    // 手机号码的校验
    const errs = mobileValidate.validate({
      mobile: mobile
    })
    if (errs.length) {
      return wx.utils.toast(errs[0].message) // 弹出提示消息
    }

    // 发送请求 根据手机号码 获取对应的验证码(真实业务 你的手机会收到短信验证码)
    const res = await wx.http({
      url: '/code',
      data: { mobile }
    })
    console.log(res);

    // 开启倒计时
    this.setData({
      countDownVisible: true, // 显示倒计时组件
      code: res.data.code
    })
  },

  // 点击登录
  async onSubmit() {
    // 获取手机号码和验证码
    const mobile = this.data.mobile
    const code = this.data.code

    // 手机号码的校验
    const errs = mobileValidate.validate({
      mobile: mobile
    })
    if (errs.length) {
      return wx.utils.toast(errs[0].message) // 弹出提示消息
    }

    // 验证码校验
    const codeErrs = codeValidate.validate({
      code: code
    })
    if (codeErrs.length) {
      return wx.utils.toast(codeErrs[0].message) // 弹出提示消息
    }

    // 发送请求 完成登录
    const res = await wx.http({
      url: '/login',
      method: 'post',
      data: { mobile, code }
    })
    // console.log(res);
    if (res.code !== 10000) return wx.utils.toast(res.message)

    // 成功获取了，把两个token都存起来
    // 1 存到本地存储中
    // 2 存一份到 应用实例中

    const app = getApp() // 获取应用实例
    app.setToken(res.data.token, res.data.refreshToken)

    // 登录完毕，重新跳转回去
    if (this.redirector) {
      // 有来源页面 跳过去
      wx.reLaunch({ url: '/' + this.redirector }) // 需要拼接 / 
    } else {
      // 没有来源页面 跳转到首页 是 tabbar页面
      wx.switchTab({ url: '/pages/index/index', })
    }
  },
})
